package com.vhall.component.plugin.common.utils.conver;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

import java.util.Objects;

/**
 * @author wangshuai01
 * @date 2022/3/3 17:59
 * @description 类转换工具类
 */
@Slf4j
public class ConvertUtils {

    /**
     * 类转换方法
     *
     * @param source      原数据
     * @param targetClass 目标类
     * @param <T>         目标泛型
     * @param <P>         原泛型
     * @return 目标数据
     */
    public static <T, P> T convertBean(P source, Class<T> targetClass) {
        if (Objects.isNull(source)) {
            return null;
        }
        try {
            T t = targetClass.getDeclaredConstructor().newInstance();
            BeanUtils.copyProperties(source, t);
            return t;
        } catch (Exception e) {
            log.error("类转换失败,原因: {}", e.getMessage());
            throw new RuntimeException("类转换失败");
        }

    }
}
